home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / adrenalin_crackme3.txt < prev    next >
Encoding:
Text File  |  1999-04-15  |  2.2 KB  |  64 lines

  1. CrackMe #3 By AdrΘnalin
  2. -----------------------
  3. Tools Used:
  4. SoftIce
  5.  
  6. ---
  7. Protection:
  8. Code
  9.  
  10. ---
  11. First, you need to have MSVBVM50.DLL loaded in your S-ICE exports.
  12. Start the crackme, enter a code and set breakpoints on rtcAnsiValueBstr and
  13. __vbaStrComp and press the OK button, on the first break you will land here:
  14.  
  15. :00401FAA  FF1508414000        CALL    [MSVBVM50!rtcAnsiValueBstr] ; ax = ascii val of current char
  16. :00401FB0  66050A00            ADD     AX,000A                     ; ax = ax + 10
  17. :00401FB4  0F80B0020000        JO      0040226A
  18.  
  19. so it modifies our chars, hmm, interesting :)
  20. disable the rtcAnsiValueBstr breakpoint and press F5, and you will break on the
  21. __vbaStrComp step on until you come here:
  22.  
  23. :00402050  6685C0              TEST    AX,AX
  24. :00402053  0F84C0000000        JZ      00402119
  25.  
  26. look up a bit and you'll see this
  27.  
  28. :00402036  C7855CFFFFFF8C1A4000MOV     DWORD PTR [EBP-00A4],00401A8C
  29. :00402040  C78554FFFFFF08800000MOV     DWORD PTR [EBP-00AC],00008008
  30. :0040204A  FF1540414000        CALL    [MSVBVM50!__vbaVarTstEq]
  31. :00402050  6685C0              TEST    AX,AX
  32. :00402053  0F84C0000000        JZ      00402119
  33.  
  34. hmm =), do a 'd 401a8c' and you'll see k.X.y.^.r.O.|.*.y.X.o.*.m.\.k.M.u.O.n.*.+
  35. and because it's a VB prog, it's in widechar format, which means that the string
  36. looks like this kXy^rO|*yXo*m\kMuOn*+ and take each char from this string and
  37. sub 10 (Ah) from each char, and you'll get the right code, but i've coded a small
  38. C program which does the calc much faster, so here is the source :
  39.  
  40. --- cut from here ---
  41.  
  42. int main(){
  43. unsigned char name[21]={0x6b,0x58,0x79,0x5e,0x72,0x4f,0x7c,0x2a,0x79,0x58,0x6f,0x2a,0x6d,0x5c,0x6b,0x4d,0x75,0x4f,0x6e,0x2a,0x2b}; // kXy^rO|*yXo*m\kMuOn*+
  44. int i;
  45.  
  46. clrscr();
  47. printf("Adrénalin's Crackme3 Key-recovery by Klefz\n");
  48.  
  49. for(i=0;i<21;i++){
  50.   name[i]=name[i]-0xa; // takes each char and sub's Ah from it
  51. }
  52. name[21]=0x00; // some small bug makes name[21] some strange char :)
  53.                // so this makes it 00h
  54. printf("\nThe registration code is: %s",name); // print out the result
  55. getch();
  56. return 0;  }
  57.  
  58. --- end of file ---
  59.  
  60. after compiling and running you'll get the code: aNoThEr oNe cRaCkEd !
  61.  
  62. not so Difficult after all :)
  63. ---
  64. /Klefz - http://klefz.cjb.net